package com.liyu.www;

public class Test {
    public static void main(String[] args) {
        Dog d = new Dog();
    }
}

class Animal {
    public String name;
    public int age;

    static{
        System.out.println("Animal static{}");
    }
    {
        System.out.println("Animal {}");
    }

    public Animal() {
        System.out.println("无参构造Animal()");
    }

    public Animal(String name,int age) {
        this.name = name;
        this.age = age;
        System.out.println("两参构造");
    }
    public void eat() {

    }

}
class Dog extends Animal{
    static {
        System.out.println("static Dog{}");
    }
    {
        System.out.println("Dog {}");
    }
    public Dog() {
        System.out.println("DOG()");
    }
    public Dog(String name,int age) {
        super(name,age);
    }
}

//继承类和代码块之间的执行顺序
//先把所有静态的执行完，然后再执行父类的实例代码块，构造，然后再执行子类的代码块，构造
//静态的只执行一次，类被加载的时候执行，之后不会执行，除非类被重新加载

//静态的最先执行，父类优先子类执行

//protected关键字
//private default protected public
//修饰成员变量或者成员方法只能在当前类当中使用，类外不可以使用
//什么都不写默认权限，只能在当前包当中才能使用，public公开的，哪里都能使用
//protected 受保护的，不同包中的子类可以使用，同一个包可以用，不同包必须是子类（继承）


